In certain fields of application, e.g. the so-called “high-end” servers, there is a need to run a large number of applications, e.g. Java applications, with a good scalability. This in turn implies to ensure: (i) application level isolation, i.e. isolation between the individual Java applications; (ii) native code (e.g. C code) isolation at the level of the hosts, e.g. the JVMs.
In a conventional approach, each application is run via a respective JVM, which is in turn run within a respective process of the operating system. This intrinsically ensures isolation between the various JVMs and applications
The above indicated solutions give satisfactory results; however, they suffer drawbacks in terms of resource requirements, especially due to the fact that a number of JVM and/or OS resources have to be duplicated into a respective copy for each of the applications.
A proposal has been made by Greg CZAJKOWSKI, in a paper entitled “Application Isolation in the Java Virtual Machine”, Proceedings of ACM, OOPSLA'00, Minneapolis, Minn., October 2000. This proposal tends to execute a plurality of applications in one or each JVM. However, it does not provide native code isolation.
A further proposal has been made by Greg CZAJKOWSKI, Laurent DAYNÈS, and Mario WOLCZKO, in “Automated and Portable Native Code Isolation”, Sun Microsystem Technical Note SMLI TR-2001-96, April 2001. This further proposal suggests to execute native code in an operating system process different from that of the “safe language application”, e.g. java language. This however induces a performance overhead, when crossing process boundaries. i.e. due to the need to use another process whenever usage of a function written in native code is desired.
Thus, although they give satisfactory results in many cases, the proposals of the prior art may not be adequate in the above indicated context of the “high-end” servers.